<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript">
	//工厂方式就是封装啊，关键最后要返回值
	function CreatePerson(name, sex) {		//构造函数：用来构造对象

		/*
		//原料
			假想的系统内部的工作流程
			var this = new Object();
		*/

		//加工  (在构造函数内添加属性 ： 原因：每个对象的属性各不相同)
		this.name = name;
		this.sex = sex;

		/*
		//出厂
			假想的系统内部的工作流程
			return this;
		*/
	}
  												//  【 给原型添加方法  原因：每个对象拥有同一方法】
	//工厂方式的问题二：每个对象拥有各自的方法 ---> 【 给构造函数添加属性 】
	CreatePerson.prototype.showName = function (){
		alert(this.name);
	};
	CreatePerson.prototype.showSex = function (){
		alert(this.sex);
	};

	//工厂方式的问题一：没有new ---> 【 加new，同时原本工厂方式的"原料"及"出厂"步骤去掉，obj全换成this 】
	var p1 = new CreatePerson('Mo', '男');
	var p2 = new CreatePerson('Alice','女');
/*
	p1.showName();
	p1.showSex();
	p2.showName();
	p2.showSex();
*/
	alert(p1.showName == p2.showName);			//true。这样方法都是同一个了
	</script>
</head>
<body>
	
</body>
</html>